package middleware

import (
	"MulticloudManagement/pkg/utils"
	"github.com/gin-gonic/gin"
)

// JWTAuth 认证用户权限中间件
func JWTAuth() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 获取Token
		token, err := c.Cookie("token")
		if err != nil {
			c.String(200, "请先登录")
			c.Abort() // 阻止后续的处理函数执行
			return
		}
		// 解析Token
		claims, err := utils.ParseJWT(token, utils.LoadConfig().Jwt.Secret)
		if err != nil {
			c.String(200, "无效的token,请重新登录")
			c.Abort() // 阻止后续的处理函数执行
			return
		}

		// 将用户信息保存到上下文
		c.Set("user", claims.User)
	}
}
